part of 'use_case.dart';

sealed class SubsequentMemorizationCardCompletionHandlingResult {}

class CompletedTrainingSubsequentMemorizationCardCompletionHandlingResult extends Equatable
    implements SubsequentMemorizationCardCompletionHandlingResult {
  const CompletedTrainingSubsequentMemorizationCardCompletionHandlingResult({
    required this.currentCardInfo,
    required this.previousCardInfo,
    required this.lexicalItemMap,
    required this.appReviewRequestTimes,
    required this.appReviewRequestReasonable,
    required this.learningInfo,
  });

  final CardInfo currentCardInfo;
  final CardInfo previousCardInfo;
  final BuiltMap<String, LexicalItem> lexicalItemMap;
  final BuiltList<DateTime> appReviewRequestTimes;
  final bool appReviewRequestReasonable;
  final LearningInfo learningInfo;

  @override
  List<Object?> get props {
    return [
      currentCardInfo,
      previousCardInfo,
      lexicalItemMap,
      appReviewRequestTimes,
      appReviewRequestReasonable,
      learningInfo,
    ];
  }
}

class OngoingTrainingSubsequentMemorizationCardCompletionHandlingResult extends Equatable
    implements SubsequentMemorizationCardCompletionHandlingResult {
  const OngoingTrainingSubsequentMemorizationCardCompletionHandlingResult({
    required this.currentCardInfo,
    required this.previousCardInfo,
    required this.learningInfo,
  });

  final CardInfo currentCardInfo;
  final CardInfo previousCardInfo;
  final LearningInfo learningInfo;

  @override
  List<Object?> get props {
    return [
      currentCardInfo,
      previousCardInfo,
      learningInfo,
    ];
  }
}
